package com.imooc.item.service;


import com.imooc.item.pojo.Items;
import com.imooc.item.pojo.ItemsImg;
import com.imooc.item.pojo.ItemsParam;
import com.imooc.item.pojo.ItemsSpec;
import com.imooc.item.pojo.vo.CommentLevelCountsVO;
import com.imooc.item.pojo.vo.ShopcartVO;
import com.imooc.pojo.PagedGridResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 商品api
 * @Author: 顾志杰
 * @Date: 2019/11/25
 * @Time: 14:54
 */
@FeignClient("foodie-item-service")
@RequestMapping("item-api")
public interface ItemService {

    /**
     * 根据商品id查询详情
     * @param itemId
     * @return
     */
    @GetMapping("item")
    public Items queryItemById(@RequestParam("itemId") String itemId);

    /**
     * 根据商品id查询商品图片列表
     * @param itemId
     * @return
     */
    @GetMapping("itemImages")
    public List<ItemsImg> queryItemImgList(@RequestParam("itemId") String itemId);

    /**
     * 根据商品id查询商品规格
     * @param itemId
     * @return
     */
    @GetMapping("itemSpec")
    public List<ItemsSpec> queryItemSpecList(@RequestParam("itemId") String itemId);

    /**
     * 根据商品id查询商品参数
     * @param itemId
     * @return
     */
    @GetMapping("itemParam")
    public ItemsParam queryItemParam(@RequestParam("itemId") String itemId);

    /**
     * 根据商品id查询商品的评价等级数量
     * @param itemId
     * @return
     */
    @GetMapping("countComments")
    public CommentLevelCountsVO queryCommentCounts(@RequestParam("itemId") String itemId);

    /**
     * 根据商品id查询商品评价（分页）
     * @param itemId
     * @param level
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("pagedComments")
    public PagedGridResult queryPagedComments(@RequestParam("itemId")String itemId,
                                              @RequestParam(name = "level",required = false) Integer level,
                                              @RequestParam(name = "page",required = false) Integer page,
                                              @RequestParam(name = "pageSize",required = false) Integer pageSize);


//    /**
//     * 搜索商品列表（分页）
//     * @param keywords
//     * @param sort
//     * @return
//     */
//    public PagedGridResult seathItems(String keywords, String sort, Integer page, Integer pageSize);
//
//    /**
//     * 根据分类id搜索商品列表（分页）
//     * @param catId
//     * @param sort
//     * @return
//     */
//    public PagedGridResult seathItems(Integer catId, String sort, Integer page, Integer pageSize);

    /**
     * 根据规格ids查询最新的购物车商品数据信息
     * @param specIds
     * @return
     */
    @GetMapping("getCartBySpecIdS")
    public List<ShopcartVO> queryItemsBySpecIds(@RequestParam("specIds") String specIds);



    /**
     * 根据商品id查询商品规格对象
     * @param itemSpecId
     * @return
     */
    @GetMapping("singleItemSpec")
    public ItemsSpec queryItemSpecById(@RequestParam("itemSpecId") String itemSpecId);


    /**
     * 获取商品主图地址
     * @param itemId
     * @return
     */
    @GetMapping("primaryImage")
    public String queryItemMainImgById(@RequestParam("itemId") String itemId);

    /**
     * 规格表中需要扣除库存
     * @param itemSpecId
     * @param buyCounts
     */
    @PostMapping("decreaseStock")
    public void decreaseItemSpecStock(@RequestParam("itemSpecId") String itemSpecId,
                                      @RequestParam("buyCounts") int buyCounts);

}
